package array

// 输入一个整数数组，实现一个函数调整数组中数字顺序
// 使得所有奇数位于数组的前半部分，所有的偶数位于数组的后半部分

func Reorder(a []int) {
	if len(a) == 0 {
		return
	}
	var pBegin = 0
	var pEnd = len(a) - 1

	for pBegin < pEnd {
		// 向后移动pBegin 直到它指向偶数
		for pBegin < pEnd && !isEven(a[pBegin]) {
			pBegin++
		}
		// 向前移动pEnd 直到它指向奇数
		for pBegin < pEnd && isEven(a[pEnd]) {
			pEnd--
		}
		if pBegin < pEnd {
			a[pBegin], a[pEnd] = a[pEnd], a[pBegin]
		}
	}
}

// 判断条件
func isEven(n int) bool {
	return (n & 1) == 0
}
